# 第五堂课添加eason的控制
import pygame  # 导入pygame模块
import sys  # 导入sys模块

pygame.init()  # 游戏初始化
screen = pygame.display.set_mode((640, 480))  # 设置游戏窗口大小
pygame.display.set_caption("Eason快跑")  # 设置游戏窗口标题

# eason的相关内容
image = pygame.image.load("image/eason.png")  # 读取Eason图片到变量image中
eason_x = 0  # 设置eason的x坐标为0
eason_y = 0  # 设置eason的y坐标为0
frame_number = 4  # 帧数
image_number = 0  # 图片的计数变量
frame_rect = image.get_rect()  # 获取全图的框体数据，以此计算单帧框体
frame_rect.width /= frame_number  # 获取每一帧的边框宽度数据，实例图片之只有一行，所以单帧高度和整体图片高度相等
fcc_clock = pygame.time.Clock()  # 获取pygame的时钟
fps = 30  # 设置刷新率，数字越大刷新率越高，但因为示例图片只有4帧所以建议设低一点 否则闪的太凶。
white = (255, 255, 255)  # 设置white变量为白色

while True:  # 进入游戏主循环
    for event in pygame.event.get():  # 键盘监听
        if event.type == pygame.QUIT:  # 如果监听到键盘的动作等于pygame的退出
            sys.exit()  # 退出游戏窗口

        if event.type == pygame.KEYDOWN:  # 如果监听到键盘按下如下按键
            if event.key == pygame.K_LEFT:  # 如果按键值等于pygame的向左按键，也就是键盘的向左键
                eason_x -= 10  # eason的坐标往左移10像素
            elif event.key == pygame.K_RIGHT:  # 如果按键值等于pygame的向右按键，也就是键盘的向右键
                eason_x += 10  # eason的坐标往右移10像素
            elif event.key == pygame.K_UP:  # 如果按键值等于pygame的向上按键，也就是键盘的向上键
                eason_y -= 10  # eason的坐标往上移10像素
            elif event.key == pygame.K_DOWN:  # 如果按键值等于pygame的向下按键，也就是键盘的向下键
                eason_y += 10  # eason的坐标往下移10像素

    if image_number < frame_number:  # 如果图片计数变量小于帧数
        frame_rect.x = (image_number % frame_number) * frame_rect.width  # 单个图片的坐标等于单个图片宽度乘以图片计数变量
        image_number += 1  # 图片计数变量加1
    else:  # 否则
        image_number = 0  # 图片的计数变量归0

    screen.fill(white)  # 填充屏幕的颜色为白色
    screen.blit(image, (eason_x, eason_y), frame_rect)  # 在游戏窗口中绘制单个图片到指定位置上
    fcc_clock.tick(fps)  # 设置游戏窗口刷新率为fps的值
    pygame.display.flip()  # 绘制窗口
